package javaCode.chapter07.encap;

/*
创建程序，在其中定义两个类：Account和AccountTest类体会java的封装性。
1. Account类要求具有属性：姓名 (长度为2位3位或4位)、余额(必须>20)、密码 (必须是六位)、如果不满足则给出提示信息，并给默认值
2. 通过setXxx方法给Account 的属性赋值
3. 在AccountTest中测试
*/
public class Account {
    //为了测试封装，修饰符设置为 私有
    private String name;
    private double balance;
    private String password;

    //提供两个构造器
    public Account() {
    }

    public Account(String name, double balance, String password) {
        this.setName(name);
        this.setBalance(balance);
        this.setPassword(password);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        if (name.length() >=2 && name.length() <=4) {
            this.name = name;
        }else{
            System.out.println("姓名 (长度为2位3位或4位)，默认为Tom");
            this.name = "Tom";
        }
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        if (balance > 20) {
            this.balance = balance;
        }else{
            System.out.println("余额(必须>20)，默认为 0");
            this.balance = 0;
        }
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        if (password.length() ==6 ) {
            this.password = password;
        }else {
            System.out.println("密码 (必须是六位)，默认为 123456");
            this.password = "123456";
        }
    }

    //显示账号信息
    public void showInfo(){
        System.out.println("账号信息 name=" + name + " 余额=" + balance + " 密码=" + password);
    }
}

